package com.example.warehousesystem_common.exception.handler;

import com.example.warehousesystem_common.exception.ServiceException;
import com.example.warehousesystem_common.web.JsonResult;
import com.example.warehousesystem_common.web.ServiceCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler
    public JsonResult<Void> ServiceExceptionHandler(ServiceException e){
        log.warn("系统出现ServiceException，将统一处理");
        log.warn("异常信息是：{}",e.getMessage());
        return JsonResult.fail(e);
    }

    @ExceptionHandler
    public JsonResult<Void> SystemHandler(Throwable e){
        log.warn("系统出现Throwable异常，将统一处理");
        log.warn("异常类型是：{}",e.getClass());
        log.warn("异常信息是：{}",e.getMessage());
        String message = "【开发阶段专用】你的服务器端出了异常，请检查服务器端控制台中的异常信息，并补充处理此类异常的方法！";
        e.printStackTrace();
        return JsonResult.fail(ServiceCode.ERR_UNKNOWN,message);
    }
}
